Jackson এর মাধ্যমে JAXB Annotation সমর্থন

Java Technologies - জ্যাকসন (Jackson) - Jackson এবং JAXB Integration
191

Jackson লাইব্রেরি সরাসরি JAXB (Java Architecture for XML Binding) অ্যানোটেশন সমর্থন করে। এটি আপনাকে এমন মডেল ক্লাসগুলোর সাথে JSON ডেটা ব্যবহার করতে দেয় যেগুলো ইতিমধ্যেই JAXB অ্যানোটেশন সহ XML ডেটা ম্যানেজ করতে ব্যবহৃত হয়।


JAXB এবং Jackson এর ইন্টিগ্রেশন

JAXB Annotations কি?

JAXB অ্যানোটেশন XML ডেটার Serialization এবং Deserialization করার জন্য Java ক্লাসগুলোর জন্য মেটাডাটা সরবরাহ করে। উদাহরণস্বরূপ:

  • @XmlRootElement: রুট এলিমেন্ট নির্ধারণ করে।
  • @XmlElement: XML এর একটি ফিল্ড বা এলিমেন্ট নির্ধারণ করে।
  • @XmlAttribute: XML এর একটি অ্যাট্রিবিউট নির্ধারণ করে।

Jackson এর জন্য JAXB Annotation মডিউল

Jackson এর একটি অতিরিক্ত মডিউল আছে, যা JAXB অ্যানোটেশনগুলোর সাথে JSON ডেটা ম্যানিপুলেট করতে দেয়।

ম্যাভেন ডিপেনডেন্সি:

<dependency>
    <groupId>com.fasterxml.jackson.module</groupId>
    <artifactId>jackson-module-jaxb-annotations</artifactId>
    <version>2.15.2</version> <!-- সর্বশেষ ভার্সন -->
</dependency>

JAXB Annotation সহ মডেল ক্লাস তৈরি

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class User {
    private String name;
    private int age;

    @XmlElement
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @XmlElement
    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

ObjectMapper কনফিগারেশন (JAXB Annotation ব্যবহার করে)

JAXB Module রেজিস্টার করা

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.module.jaxb.JaxbAnnotationModule;

public class JacksonWithJaxbExample {
    public static void main(String[] args) throws Exception {
        // JAXB Annotation সমর্থনকারী ObjectMapper তৈরি
        ObjectMapper mapper = new ObjectMapper();
        mapper.registerModule(new JaxbAnnotationModule());

        // মডেল অবজেক্ট তৈরি
        User user = new User();
        user.setName("Alice");
        user.setAge(30);

        // JSON Serialization
        String json = mapper.writeValueAsString(user);
        System.out.println("Serialized JSON: " + json);

        // JSON Deserialization
        String jsonString = "{\"name\":\"Alice\",\"age\":30}";
        User deserializedUser = mapper.readValue(jsonString, User.class);
        System.out.println("Deserialized User: " + deserializedUser.getName() + ", " + deserializedUser.getAge());
    }
}

আউটপুট

Serialization:

{"name":"Alice","age":30}

Deserialization:

Deserialized User: Alice, 30

JAXB এবং JSON এর মধ্যে Mapping

  1. @XmlRootElement → JSON রুট অবজেক্ট।
  2. @XmlElement → JSON এর একটি ফিল্ড।
  3. @XmlAttribute → JSON ফিল্ড হিসেবে কাজ করবে, তবে এটি XML এ অ্যাট্রিবিউট হিসেবে কাজ করে।

উদাহরণ: @XmlAttribute

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Product {
    @XmlAttribute
    private int id;

    private String name;

    @XmlElement
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}

Serialization:

{"id":1,"name":"Laptop"}

Spring Boot এবং JAXB Annotation সহ REST API উদাহরণ

Controller উদাহরণ:

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    @GetMapping("/user")
    public User getUser() {
        User user = new User();
        user.setName("Alice");
        user.setAge(30);
        return user;
    }
}

Spring Boot Configuration:

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.module.jaxb.JaxbAnnotationModule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class JacksonConfig {
    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper mapper = new ObjectMapper();
        mapper.registerModule(new JaxbAnnotationModule());
        return mapper;
    }
}

API Output:

{"name":"Alice","age":30}
  • Jackson এবং JAXB এর ইন্টিগ্রেশন আপনাকে JSON এবং XML ফরম্যাট উভয়ের সাথে কাজ করার সময় মডেল ক্লাস পুনরায় লেখার প্রয়োজনীয়তা থেকে মুক্তি দেয়।
  • JaxbAnnotationModule Jackson এর ObjectMapper এ রেজিস্টার করে JAXB অ্যানোটেশন সমর্থন সক্ষম করা যায়।
  • এটি বিশেষভাবে কার্যকর যখন একটি API JSON এবং XML ফরম্যাট উভয়ই সমর্থন করে।
Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...